package ordinary;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Wukong
 * Date: 2022-05-31
 * Time: 15:46
 */

import java.io.FileNotFoundException;

/**
 * checked exception 受查异常必须处理才能通过编译
 * Exception父类衍生出checked exception and runtime exception
 *
 */
public class Abnormal {
    public static void main(String[] args) throws CloneNotSupportedException, FileNotFoundException {
        int a=0;
        String name="word";
        function(a,name);
    }
    static int function(int a,String name) throws CloneNotSupportedException, FileNotFoundException {
        if (a==0){
            throw new CloneNotSupportedException();
        }
        if (name.equals("world")){
            throw new FileNotFoundException("配置文件名字不符合");
        }

        return a;
    }
}

/**
 * 受查异常必须被处理才能通过编译
 * 处理方式   1.异常声明throws  2. try-catch捕获处理
 * 注意事项：1.捕获的异常需要正确  2.可以用一个catch同时捕获多个异常但是不推荐
 *         3.如果异常之间具有父子关系，一定是子类异常在前，父类异常在后
 *         4.使用父类exception进行所有的捕获
 */
 class AbnormalTwo{
     public static void main(String[] args) {
         try {
             //可能出现的异常代码
             int[]arr=null;
             int len=arr.length;
         }catch (NullPointerException nullPointerException){
             //捕获的异常应该对应
             nullPointerException.printStackTrace();//打印异常信息
             System.out.println("这是一个空指针异常");
         }
         catch (ArithmeticException arithmeticException){
             //同时捕获多个异常
             System.out.println("这是一个算术异常");
         }
         System.out.println("执行！");
     }
     //
    class AbnormalThree{
        public void main(String[] args) {
            try {
                //可能出现的异常代码
                int[]arr=null;
                int len=arr.length;
            } catch (Exception e){
                System.out.println("全部捕获");
            }
            System.out.println("执行！");
        }

    }

}
/**
 * finally-return
 * 异常的处理流程
 *
 */
class AbnormalFour{
    public static void main(String[] args) {
      try {
          int[]arr=new int[3];
          System.out.println(arr[4]);
      }catch (ArrayIndexOutOfBoundsException e){
          System.out.println("这是一个数组越界异常");
          return;
      }
      finally {
          System.out.println("依然执行");
      }
    }
}



